↳ Prolog
↳ PrologToPiTRSProof
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
INT_IN(s(X), s(Y), XS) → U31(X, Y, XS, int_in(X, Y, ZS))
INT_IN(s(X), s(Y), XS) → INT_IN(X, Y, ZS)
INT_IN(0, s(Y), .(0, XS)) → U21(Y, XS, int_in(s(0), s(Y), XS))
INT_IN(0, s(Y), .(0, XS)) → INT_IN(s(0), s(Y), XS)
U31(X, Y, XS, int_out(X, Y, ZS)) → U41(X, Y, XS, intlist_in(ZS, XS))
U31(X, Y, XS, int_out(X, Y, ZS)) → INTLIST_IN(ZS, XS)
INTLIST_IN(.(X, XS), .(s(X), YS)) → U11(X, XS, YS, intlist_in(XS, YS))
INTLIST_IN(.(X, XS), .(s(X), YS)) → INTLIST_IN(XS, YS)
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
INT_IN(s(X), s(Y), XS) → U31(X, Y, XS, int_in(X, Y, ZS))
INT_IN(s(X), s(Y), XS) → INT_IN(X, Y, ZS)
INT_IN(0, s(Y), .(0, XS)) → U21(Y, XS, int_in(s(0), s(Y), XS))
INT_IN(0, s(Y), .(0, XS)) → INT_IN(s(0), s(Y), XS)
U31(X, Y, XS, int_out(X, Y, ZS)) → U41(X, Y, XS, intlist_in(ZS, XS))
U31(X, Y, XS, int_out(X, Y, ZS)) → INTLIST_IN(ZS, XS)
INTLIST_IN(.(X, XS), .(s(X), YS)) → U11(X, XS, YS, intlist_in(XS, YS))
INTLIST_IN(.(X, XS), .(s(X), YS)) → INTLIST_IN(XS, YS)
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
INTLIST_IN(.(X, XS), .(s(X), YS)) → INTLIST_IN(XS, YS)
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
INTLIST_IN(.(X, XS), .(s(X), YS)) → INTLIST_IN(XS, YS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
INTLIST_IN(.(X, XS)) → INTLIST_IN(XS)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
INT_IN(s(X), s(Y), XS) → INT_IN(X, Y, ZS)
INT_IN(0, s(Y), .(0, XS)) → INT_IN(s(0), s(Y), XS)
int_in(s(X), s(Y), XS) → U3(X, Y, XS, int_in(X, Y, ZS))
int_in(s(X), 0, []) → int_out(s(X), 0, [])
int_in(0, s(Y), .(0, XS)) → U2(Y, XS, int_in(s(0), s(Y), XS))
int_in(0, 0, .(0, [])) → int_out(0, 0, .(0, []))
U2(Y, XS, int_out(s(0), s(Y), XS)) → int_out(0, s(Y), .(0, XS))
U3(X, Y, XS, int_out(X, Y, ZS)) → U4(X, Y, XS, intlist_in(ZS, XS))
intlist_in(.(X, XS), .(s(X), YS)) → U1(X, XS, YS, intlist_in(XS, YS))
intlist_in([], []) → intlist_out([], [])
U1(X, XS, YS, intlist_out(XS, YS)) → intlist_out(.(X, XS), .(s(X), YS))
U4(X, Y, XS, intlist_out(ZS, XS)) → int_out(s(X), s(Y), XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
INT_IN(s(X), s(Y), XS) → INT_IN(X, Y, ZS)
INT_IN(0, s(Y), .(0, XS)) → INT_IN(s(0), s(Y), XS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
INT_IN(0, s(Y)) → INT_IN(s(0), s(Y))
INT_IN(s(X), s(Y)) → INT_IN(X, Y)
From the DPs we obtained the following set of size-change graphs: